package com.rj.ability.leqi.adapter.domain.aisino;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.rj.ability.leqi.req.DsccstdysData;
import com.rj.core.constant.DigitsEnum;
import com.rj.util.AssertUtils;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

/**
 * 代收车船税
 *
 * @author YFX_RANLUBO
 * @date 2024/04/30 15:42
 **/
@Data
@AutoMapper(target = DsccstdysData.class, reverseConvertGenerate = false)
public class AisinoDsccstdysData {
    /**
     * 保险单号 varchar 40 是
     */
    @JsonProperty("insuranceId")
    private String bxdh;
    /**
     * 车牌号/船舶登记号 varchar 40 是
     */
    @JsonProperty("vvNumber")
    private String cphcbdjh;
    /**
     * 税款所属期 date 是 格 式 ： yyyy-MM+ 空 格 +yyyy-MM。 例 如 ： 2023-01 2023-03。
     */
    @JsonProperty("taxPaymentPeriod")
    private String skssq;
    /**
     * 代收车船税金额 number 13,2 是 54
     */
    @JsonProperty("collectedVvtAmount")
    private String dsccsje;
    /**
     * 滞纳金金额 number 13,2 是
     */
    @JsonProperty("lateFee")
    private String znj;
    /**
     * 金额合计 number 13,2 是
     */
    @JsonProperty("totalAmount")
    private String jehj;
    /**
     * 车辆识别代码/车架号码 varchar 17 是
     */
    @JsonProperty("vin")
    private String cjh;

    public void check() {
        AssertUtils.notEmpty("保险单号", bxdh, 40);
        AssertUtils.notEmpty("车牌号/船舶登记号", cphcbdjh, 40);
        AssertUtils.match(false, "税款所属期", skssq, "^20\\d{2}-((0[1-9])|(1[012]))\\s+20\\d{2}-((0[1-9])|(1[012]))$");
        AssertUtils.maxDigits(false, "代收车船税金额",
                dsccsje, 13, 2, DigitsEnum.POSITIVE);
        AssertUtils.maxDigits(false, "滞纳金金额",
                znj, 13, 2, DigitsEnum.POSITIVE);
        AssertUtils.maxDigits(false, "金额合计", jehj,
                13, 2, DigitsEnum.POSITIVE);
        AssertUtils.notEmpty("车辆识别代码/车架号码", cjh, 17);


    }


}
